iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
0
Cloud Native

Cloud Native Startups:一個簡單的垃圾分類器與計算平台系列 第 14

[Day 14] 軟體循環經濟 (Record Average Data)

  • 分享至 

  • xImage
  •  

當我們把海岸廢棄物收回來後,許多人第一個問題是:「工廠會不會很臭?」所以這一系列的軟體循環經濟,會從空汙防治作為第一個使用案例出發,然後發展軟體的循環經濟。設計並不是一蹴可幾的,需要經過一連串過程與重構,更準確地說,需要耐心 (Patience)、紀律 (Personality),以及原則 (Principle)。

平均值之記錄 (Record Average Data)


需求分析

  • 粒狀污染物不透光率監測設施之監測數據,應以「六分鐘平均值」作為數據紀錄值,此「六分鐘平均值」為三十六個以上等時距數據算術平均值
    • 因為「粒狀污染物不透光率監測設施之採樣、分析及記錄,應在十秒之內完成一次循環」,所以一分鐘至少有 6 次循環,六分鐘至少有 36 次循環。
    • 所謂「每一次循環之採樣、分析及記錄」,指的是原始數據之記錄 (Record Raw Data),為寫入原始數據儲存體 (RawDataStore)
    • 所謂「平均值記錄」,指的是產生該時間點過去 N 分鐘之平均值記錄檔 (Record Avg Data),為讀取原始數據儲存體 (RawDataStore)
    • 獲取 N 分鐘平均值時,須判斷該 N 分鐘內原始數據量,是否大於 M 筆。
    • 假設:本階段不考慮採樣失敗 (Sample Fail)分析失敗 (Analyze Fail)記錄失敗 (Record Fail) 之狀況,即保證在原始數據儲存體中,該 N 分鐘內,必有 M 個以上之等時距原始數據。
    • 為保證「等時距」要求:即便採樣失敗、分析失敗,所得之原始數據依然要存入原始數據儲存體中,並標記為無效
    • 平均值記錄檔案是一種報表 (Report)
  • 氣狀污染物稀釋氣體排放流率監測設施之監測數據,應以「十五分鐘平均值」作為數據紀錄值,每一筆「十五分鐘平均值」應為 [該十五分鐘內所有監測數據紀錄值] [百分之七十五以上] 之 [有效監測數據紀錄值] 進行平均,且須可計算回 [修正前之原始數據]。
    1. 該十五分鐘內所有監測數據紀錄值:指過去 N 分鐘內,所有原始數據之記錄。
    2. 有效監測數據紀錄值:指所有原始數據之記錄中,被標記為「有效 (Valid)」之原始數據。
    3. 百分之七十五以上:指所有原始數據之記錄中,必須要有 M% 以上是「有效監測數據紀錄值」,並將之用以計算平均。(M >= 75)
    4. 可計算回修正前之原始數據:修正前,指的是如果有效、無效的數據並用,所計算出之均值;要能進行反向運算以驗證修正後有效化之計算均值。
  • 氣狀污染物監測設施之氮氧化物監測數據紀錄值應依下列規定之一計算 (此項為氣狀污染物監測設施中,氮氧化物之特殊需求):
    1. 監測設施可監測[一氧化氮]和[二氧化氮]者,應將[一氧化氮]和[二氧化氮]監測數據紀錄值合併計算 (SumUp)
      • [一氧化氮]與[二氧化氮] 仍個別以「十五分鐘平均值」作為數據紀錄值,再考慮合併計算事宜。
    2. 監測設施僅可監測[一氧化氮]者,且 ([未裝設觸媒轉化器者] 或 [觸媒轉化器轉化率未達 90% 者]),應以經主管機關同意之計算方法和比例,將[一氧化氮監測數據]乘以一係數計算 [氮氧化物]。
      • 觸媒轉化器 (CatalyticConverter) 可將氮氧化物轉換為對人體無害的氣體。
      • 由上可知,若監測設施僅可監測[一氧化氮]者,但滿足觸媒轉化器等相關規格要求,意即對於二氧化氮之吸收有一定成效,則可用原始 [一氧化氮監測數據] 而不需乘以一係數 (Coeff_NOx) 記錄之。
      • 本階段假設不存在只能監測[二氧化氮]之情況。

測試案例

[TestMethod]
public void TestRecordAvgDataAmountRequired()
{
    bool res = true;            
    CAMS_ParticulateMatters CAMS_PM = new CAMS_ParticulateMatters();
    CAMS_PM.SamplingItemList.Add(new Opacity());
    SamplingItem item = CAMS_PM.SamplingItemList.First();
    RawDataStore.Instance.ClearRawDataStore();
    for (int s = 1; s < item.IntervalAmountRequired; s++)
    {
        item.Sampling();
        item.Analyzing();
        item.RecordRawData();
    }
    res = item.RecordAvgData();
    Assert.IsFalse(res);

    for (int s = item.IntervalAmountRequired; s <= item.IntervalAmountRequired; s++)
    {
        item.Sampling();
        item.Analyzing();
        item.RecordRawData();
    }
    res = item.RecordAvgData();
    Assert.IsTrue(res);
}

設計圖

https://ithelp.ithome.com.tw/upload/images/20181116/20107753NyhX3l2kuI.png


上一篇
[Day 13] 軟體循環經濟 (Monitoring Data and Computing Regulations)
下一篇
[Day 15] 軟體循環經濟 (Setting and Configurations)
系列文
Cloud Native Startups:一個簡單的垃圾分類器與計算平台30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言